"""
实例属性：
    实例对象名.实例属性名 = 内容
    1. 在类的方法中
        self.属性 = 内容
    2. 类的外面
        实例对象名.实例属性名 = 内容
    3. 实例属性 必须通过 实例对象 才能访问
类属性：
    1. 定义在 类里面，类方法外面 的变量就是 类属性
    2. 类属性可以使用 类名 或 实例对象 访问
        - 为了避免不必要麻烦，类属性推荐通过类名访问

实例属性和类属性区别：
1. 实例属性为某个实例对象所独有的，不同实例对象不同实例属性
2. 类属性被该类的所有对象所共享

需求：
# 1. 定义一个 工具类
# 2. 每件工具都有自己的 name
# 3. 需求 —— 知道使用这个类，创建了多少个工具对象？
"""

class Tool(object):
    # 在类里面，方法的外面定义的变量
    count = 0   # 类属性

    """工具类"""
    def __init__(self, name):
        # self.变量 = 内容     对象.变量 = 内容，  实例属性
        self.name = name

        # 类属性 += 1,  操作类属性：类名.类属性
        Tool.count += 1

# 实例化3个对象
t1 = Tool('锤子')
t2 = Tool('石头')
t3 = Tool('扳手')
# 打印实例属性，实例属性，一定只能通过实例对象来访问
print(t1.name, t2.name, t3.name)
# 打印类属性
print(Tool.count)
# 只是访问类属性，不修改，通过类名或实例对象名，都可以，建议类名
# 如果修改(需要赋值)，只能通过类名操作
print(t1.count, t2.count, t3.count)